package rxb.demo.nyzcontroller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import rxb.demo.nyzentity.User;
import rxb.demo.nyzservice.IUserService;

import javax.servlet.http.HttpSession;

/**
 * 登陆成功后跳转页面
 */
@Controller
public class nyzbackController {
    @Autowired
    private IUserService userService;

    @GetMapping("/indexnyz/nyz-register")
    public String register(){
        return "indexnyz/nyz-register";
    }

    /**
     * 返回到登陆的视图界面
     * @return
     */
    @GetMapping("/indexnyz/nyz")
    public String nyz2(){
        return "indexnyz/nyz";
    }

    /**
     * 接受参数到几种方式：
     *    1 - 参数以散列的形式存在 - 参数的名称一定要和input表单的name属性的名称保持一致，才能够实现自动封装的功能
     * @param uname
     * @param password
     * @return
     */
//    @GetMapping("/user/logincl")
//    public String logincl(String uname,String password){
//        //需要在后台接受到jsp页面表单中到数据
//        System.out.println(uname);
//        System.out.println(password);
//        return "index/index";
//    }

//    @GetMapping("/user/logincl")
//    public String logincl(User user){
//        //需要在后台接受到jsp页面表单中到数据
//        System.out.println(user);
//        return "index/index";
//    }

    /**
     * 使用实体类来接受参数的化，那么必须要保证匹配
     * 实体类的属性名和input的name的名称高度保持一致
     * @param user
     * @return
     */
    @PostMapping("/indexnyz/nyz")
    public String logincl(User user,HttpSession session){
        //需要在后台接受到jsp页面表单中到数据

        //调用service的login方法
        User u = userService.nyz2(user.getUsername());

        //进行各种判断
        if(null!=u){
            //用户是存在的
            if(u.getPassword().equals(user.getPassword())){
                //System.out.println("登陆成功！");

                //将登陆成功的用户放入到session作用域中
                session.setAttribute("userLogin",u);

                //新增，删除，修改 - 推荐使用重定向
                //如何防止表单进行二次提交

                return "redirect:/nyz";
            }else{
                //System.out.println("登陆失败！");

                //控制层转发到控制层
                return "redirect:/indexnyz/nyz2?error=1";
            }

        }else{
            //用户不存在
            //System.out.println("用户不存在！");
            return "redirect:/indexnyz/nyz2?error=0";

        }
    }

    /**
     * 安全退出 - 清空session
     * @param session
     * @return
     */
//    @GetMapping("/user/exit")
//    public String exit(HttpSession session){
//        //重定向是不能够直接重定向到jsp页面的。
//
//        //清空session
//        session.invalidate();
//
//        return "redirect:/user/loginView";
//    }
}

